#include "AffichageSDL.h"


void pause()
{

    int continuer = 1;
    SDL_Event event;
    /** Le programme va boucler tant qu'un évènement ne va pas modifier la valeur de la variable continue */
    while (continuer)
    {
        /** Debut de la boucle d'évènement */
        /** A faire : Une fois l'image du menu crée, il faut ajouter en évènements les clicks de la souris
        * sur les rectangles correspondants aux choix possibles du joueur
        *   ------------------
        *   -    Bomberman   -         Exemple d'image de menu :
        *   -      *1J*      -              les textes entre les étoiles correspondent aux rectangles
        *   -      *2J*      -              définissants les différents choix possibles et attendus par
        *   -   *J1 VS CPU*  -              la procédure
        *   -    *Battle*    -
        *   ------------------
        * Il est aussi possible d'ajouter un rectangle "curseur" que l'on déplace avec les fleches directionnelles
        * selon les différents choix possibles, puis en cas de saisie de la touche entree,
        * choisir de passer à la suite en fonction du rectangle en face du "curseur" */
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            /** En cas de saisie au clavier */
            case SDL_KEYDOWN:
                {
                    /** la touche n mettra fin à la boucle d'évènement */
                    if (event.key.keysym.sym == SDLK_n)
                        continuer = 0;
                    break;
                }
        } /** fin switch */
    }
}


void afficheDebutJeu (SDL_Surface * ecran)
{
    /** Chargement de l'image de fond */
    SDL_Surface * imgMenu;
    imgMenu = SDL_LoadBMP("Images/imgMenu.gif");

    /** Rectangle avec les coordonnées nécessaires à l'affichage de l'image du menu lors du BlitSurface */
    SDL_Rect posImgMenu;
    posImgMenu.x=0;
    posImgMenu.y=0;

    /** On affiche l'image et on met à jour l'écran */
    SDL_BlitSurface(imgMenu, NULL, ecran, &posImgMenu);
    SDL_Flip(ecran);

    /** Pause du programme en attendant le choix du joueur */
    pause ();
}

void BouclePrincipaleEvenementSDL ()
{
    /** initialisation de SDL video */
    if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
    {
        printf( "Erreur d'initialisation de SDL : %s\n", SDL_GetError() );
        return 1;
    }
    atexit(SDL_Quit); /** Quitter SDL proprement */

    /** Titre de la fenêtre */
    SDL_WM_SetCaption("Projet Bomberman !", 0);

    /** Icone de la fenêtre
    * NB : Creer une icône bomberman et la placer dans le dossier images */
    SDL_WM_SetIcon(SDL_LoadBMP("Images/bomberman.bmp"), NULL);

    /** creation d'une nouvelle fenêtre */
    SDL_Surface* ecran = SDL_SetVideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE, 16,
                                           SDL_HWSURFACE|SDL_DOUBLEBUF);
    if ( !ecran )
    {
        printf("Erreur dans le chargement de SDL video en 640x480 : %s\n", SDL_GetError());
        return 1;
    }

    /** chargement d'une image */
    SDL_Surface* bmp = SDL_LoadBMP("cb.bmp");
    if (!bmp)
    {
        printf("Erreur dans le chargement de l'image bitmap bitmap: %s\n", SDL_GetError());
        return 1;
    }

    /** Rectangle avec les coordonnées nécéssaires à l'affichage de l'icone bmp lors du BlitSurface */
    SDL_Rect position;
    position.x = 0;
    position.y = 0;

    /** On affiche le menu principal avec le fond d'écran et les différents modes à choisir */
    afficheDebutJeu(ecran);

    /** boucle principale */
    int done = 0;
    while (done != 1)
    {
        SDL_Event event;
        while (SDL_PollEvent(&event))
        {
            switch (event.type)
            {
                /** exit si la fenêtre est fermée */
            case SDL_QUIT:
                done = 1;
                break;

                /** vérifie les évènements du clavier */
            case SDL_KEYDOWN:
                {
                    /** exit si appui de la touche echap */
                    if (event.key.keysym.sym == SDLK_ESCAPE)
                        done = 1;
                    break;
                }
            } /** fin switch */
        }

        /** on efface l'écran */
        SDL_FillRect(ecran, 0, SDL_MapRGB(ecran->format, 0, 0, 0));

        /** On affiche les images à l'ecran */
        SDL_BlitSurface(bmp, 0, ecran, &position);

        /** On met à jour l'ecran */
        SDL_Flip(ecran);
    } /** fin de la boucle principale */

    /** on libere les images */
    SDL_FreeSurface(bmp);

    /** Si tout va bien */
    printf("Fermeture propre du programme \n");
}

